home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / clang / mcomm600.zip / UPDATE.DOC < prev    next >
Text File  |  1994-10-03  |  17KB  |  355 lines

  1.  
  2.                              MCOMM 6.00 UPDATE NOTES
  3.  
  4.          Added support for IRQs 8-15 and improved the documentation
  5.          on how to find the values for the IRQ masks and vector
  6.          numbers.  Corrected an oversight in async_restart that
  7.          caused it to not work on some ports when 3 or more ports
  8.          were open simultaneously.
  9.  
  10.          Note: The 6.00 version designation (versus 5.60) is because
  11.          I use the timestamp on the files to indicate what version of
  12.          MCOMM they belong to.  Since a file can't be timestamped
  13.          as 5:60, I had to change the major number.
  14.  
  15.  
  16.                              MCOMM 5.59 UPDATE NOTES
  17.  
  18.          Forgot a switch when compiling version 5.58 which caused
  19.          Microsoft's default library names to be embedded in the OBJs.
  20.          The result is you had to tell your linker to ignore default
  21.          library specs, rename a lib to be called xLIBCE, or (if
  22.          you didn't know what to do) stay with version 5.57.  5.59
  23.          does not reference any default libraries.  Other changes:
  24.          Under certain conditions async_open did not restore interrupt
  25.          vectors properly if the open failed.  This is corrected.
  26.          Documented some additional v_scrlm mode options that were
  27.          added to make it easier to extend the video routines to
  28.          support VT100 emulation (see SUPLMNT.DOC).  Added some code
  29.          to the TXZM.C port open routine to overcome a serial port
  30.          lock up problem with some early PCI motherboards (you may
  31.          want to steal this and put it in your open loop--a lot of
  32.          PCs are affected).
  33.  
  34.  
  35.                              MCOMM 5.58 UPDATE NOTES
  36.  
  37.          The version 5.58 update consists only of changes to the TXZM
  38.          source code.  See TXZM.DOC for the list of updates.
  39.  
  40.  
  41.                              MCOMM 5.57 UPDATE NOTES
  42.  
  43.          Made a change to an internal routine that initiated transmit
  44.          interrupts.  This change fixes 2 problems--one with some new
  45.          UARTs that recently appeared, and the other with failed or very
  46.          slow transmits when running a program that uses MCOMM in a DOS
  47.          box under OS/2.
  48.  
  49.          The COMM.H header file was modified to include vector numbers
  50.          and IRQ masks for IRQs other than 3 and 4.
  51.  
  52.          Fixed a problem with the RecurseSubdirs function in TXZM.C.  It
  53.          sometimes lost track of the current directory if the recurse
  54.          subdirectories option was used when sending files.
  55.  
  56.          Registered users of 5.50+ may download a free upgrade to 5.57
  57.          by logging onto N.E.T. Datalink, 903-838-6713, and leaving a
  58.          message to the sysop that includes:
  59.  
  60.              1) Registration number from the original disk.
  61.              2) Whether the original registration was for "Source
  62.                 and Libraries" or "Libraries Only".
  63.              3) Your name and address.  This must match the name and
  64.                 address the software was originally registered under
  65.                 unless you have moved.
  66.  
  67.         Please allow 3 or 4 days from the time you leave the message
  68.         requesting the update until you call back to download it.
  69.  
  70.         Mail in updates are $10.  See ORDER.DOC if you want a mail in
  71.         update.
  72.  
  73.                            MCOMM 5.54-5.56 UPDATE NOTES
  74.  
  75.          Up to four ports may now be opened simultaneously as long as
  76.          they do not share port addresses, IRQ lines, or vector numbers.
  77.          Previously the limit was 2 simultaneous ports.  The AT extended
  78.          IRQ lines (IRQs 8 thru 15) are not supported.
  79.  
  80.          A new use for 'v_scrlm' flag in the ANSI video code has been
  81.          implemented making it easier to develop code that emulates the
  82.          VT100.  Setting 'v_scrlm' to -1 causes the screen and cursor
  83.          positioning to behave properly for VT100 no scroll mode.  This
  84.          change should have no effect on existing code.
  85.  
  86.          Fixed a bug in the video code that occurred when a backspace
  87.          character was displayed within a string with direct writes
  88.          enabled.  (This last change is the difference between 5.55 and
  89.          the 5.54 beta).  Version 5.56 consisted of a change to TXZM.C
  90.          demo to account for change in COMM_S.LIB noted in following
  91.          paragraph.
  92.  
  93.  
  94. VERY IMPORTANT:
  95.  
  96.          If your code uses the option to disable or ignore the 16550
  97.          FIFOs, or if your code disables MSR or LSR interrupts, you must
  98.          make some changes to your source before using the new libs.  In
  99.          order to support port addresses above 0x0FFFh, it was necessary
  100.          to not use the high bits of the async_open ComBase parameter as
  101.          flags.  Flags affecting 16550 operation and LSR/MSR interrupts
  102.          must now be OR'd with the 'vctrnbr' argument of async_open
  103.          rather than the 'combase' parameter.  ASYNC.DOC reflects these
  104.          changes to the async_open function.
  105.  
  106.  
  107.  
  108.                              MCOMM 5.52 UPDATE NOTES
  109.  
  110.          No changes have been made to the serial code.  The video
  111.          code includes a new feature that allows installing your own
  112.          handler for unrecognized ANSI sequences (see SUPLMNT.DOC).
  113.          The demos were updated to work with the latest versions of
  114.          Borland/Turbo C/C++ and Microsoft C/C++.  The latest version
  115.          of Zortech C/C++ the code has been tested with is 2.00.  They
  116.          should work with later versions of ZTC with few or no changes.
  117.  
  118.          The ZMODEM demo (TXZM) was organized a little differently so
  119.          all three supported compilers could use the the same ZMLIBs,
  120.          rather than having a set of ZMLIBs for each memory model for
  121.          each compiler.  This required including another module of the
  122.          source code in the shareware version of MCOMM (XYZGEN.C) that
  123.          formerly only came with the registered version.  This change
  124.          also fixed some linker "unresolved external" errors for users
  125.          of earlier versions of Turbo C.
  126.  
  127.          The TXZM demo now will respond with a CPR (cursor position
  128.          report) sequence when it is sent an ANSI DSR (device status
  129.          request).  This is so BBS systems that auto-detect ANSI will
  130.          recognize TXZM's mini-terminal mode as an ANSI capable program.
  131.          The implementation of this feature in TXZM is also a good
  132.          example of how to put an unrecognized ANSI sequence handler in
  133.          your program if you are using the MCOMM video functions.
  134.  
  135.          Support for "Doorway" mode was added to TXZM.  Pressing ALT=
  136.          while in mini-terminal mode toggles this mode on and off.  The
  137.          screen switches to a 25 line display when Doorway mode is on
  138.          and reverts back to a 24 line display when Doorway mode is off.
  139.          Since the purpose of Doorway mode is to allow the sending of
  140.          special keys such as function keys, the arrow keys, PGUP, PDDN,
  141.          etc., none of the TXZM program functions (including Exit, Help,
  142.          Shell, etc.) work while Doorway mode is enabled.
  143.  
  144.          An otherwise undocumented -7 switch was added to TXZM.  This
  145.          switch strips the high bit from incoming characters when in
  146.          mini-terminal mode.
  147.  
  148.  
  149.  
  150.  
  151.                              MCOMM 5.50 UPDATE NOTES
  152.  
  153.          Version 5.50 adds RTS flow control for the receive side.
  154.          Previous versions supported monitoring CTS to insure the device
  155.          being sent to was not overran but did not lower RTS if the PC
  156.          was being overran.  The function 'async_msrflow' has been
  157.          modified to support this option.  For more information, see the
  158.          updated documentation on 'async_msrflow' in ASYNC.DOC.  This
  159.          change also necessitated a change in the ASYNC structure making
  160.          it one byte longer.  BE SURE TO USE THE RIGHT HEADER FILE AND
  161.          RECOMPILE ANY CODE THAT USES COMM.H or COMM.HPP.
  162.  
  163.          Added a Zmodem demo program called TXZM.  The shell code and
  164.          linkable libraries are not part of the shareware version of
  165.          MCOMM.  Complete source comes with the registered version.
  166.          This is primarily a demo with limited documentation and limited
  167.          support.  It also happens to be very fast and contains a lot of
  168.          extras.  It MAY NOT be distributed except as stated in its
  169.          documentation.
  170.  
  171.  
  172.                              MCOMM 5.41 UPDATE NOTES
  173.  
  174.          Version 5.41 contains a few minor changes and bug fixes.  These
  175.          are:
  176.  
  177.          1) The 'volatile' keyword was added to ASYNC structure members
  178.             that are modified by the interrupt handler.  This corrects
  179.             problems with optimizing compilers (such as MSC 6.0) that
  180.             load variables into registers.  Many of the macro
  181.             implemented functions test variables that are modified by
  182.             the interrupt handler.  If the compiler, in optimizing a
  183.             loop, loads a variable into a register that is modified by
  184.             the interrupt handler, it will never see the variable
  185.             change.  The 'volatile' key word instructs the compiler to
  186.             not assume the variable remains constant.  Thanks to Chris
  187.             Fanning for pointing this out to me.
  188.  
  189.          2) The ANSI cursor position sequence did not recognize the
  190.             window relative ('v_wrel') mode of operation.  If an ANSI
  191.             cursor sequence was received, it was always treated relative
  192.             to 0,0.  It now treats the current window's top left corner
  193.             as 0,0 if 'v_wrel' is non-zero.  Thanks to David Speer for
  194.             this information.
  195.  
  196.          3) When a line was exactly the width of the screen, any
  197.             following CR/LFs were ignored until a non CR/LF character
  198.             was received.  This is now fixed.
  199.  
  200.          4) The definition of SHFT_TAB in KEYS.H has been wrong for the
  201.             last several versions.  Thanks to Cleo Yarber for pointing
  202.             this out to me several times.
  203.  
  204.  
  205.  
  206.  
  207.                              MCOMM 5.40 UPDATE NOTES
  208.  
  209.          The 5.40 version of MCOMM corrects two problems:
  210.  
  211.          1) Some UARTs miss transmit interrupts when they are ran in
  212.             full duplex mode.  Code was added to detect missed
  213.             interrupts and correct the situation.  This condition would
  214.             cause previous versions of MCOMM to quit transmitting until
  215.             the transmit buffer was flushed or the port closed and
  216.             reopened.  This bug only showed up when operating in full
  217.             duplex mode and only with some UARTs.  Version 5.40 has been
  218.             tested by running several megabytes of data through 8250,
  219.             16450, and 16550 UARTs in full duplex mode and never fails
  220.             to detect a missed interrupt and correct for it.
  221.  
  222.          2) The loop that loads bytes into the transmit FIFOs (or the
  223.             transmit hold register if the UART isn't a 16550) updates
  224.             the transmit buffer output pointer in a register.  The loop
  225.             is in the transmit interrupt handler and in previous
  226.             versions of MCOMM5 the transmit interrupt handler code was
  227.             called by the routine that started up the transmitter.  If a
  228.             transmit interrupt occurred while the transmit start up code
  229.             was within this loop, the buffer output pointer could be
  230.             corrupted.  The result was scrambled output.  This only
  231.             happened if the transmitter was sent a character, allowed to
  232.             empty, and then immediately sent another character.  If only
  233.             one character was sent at a time slowly, as in typing, or if
  234.             the buffer was loaded up rapidly as in a program loop,
  235.             everything was OK.  If characters were sent in a program loop
  236.             that put a "small" delay between characters (character
  237.             pacing), it often failed.  This was corrected by changing
  238.             the transmit initiate routine so that it toggles the
  239.             transmit interrupt enable bit in the UART's interrupt enable
  240.             register to initiate transmit interrupts rather than calling
  241.             the interrupt handler directly.
  242.  
  243.  
  244.          ADDITIONS:
  245.  
  246.          An option was added to the async_open function to force FIFO
  247.          mode off.  Previously you could OR the ComBase parameter with
  248.          0x8000 and the code skipped over the check for a 16550 UART.
  249.          If it was there and on, it stayed on.  If it was there and off,
  250.          it stayed off.  You can now OR the ComBase parameter with
  251.          0x4000 to force the FIFOs to be off.  If you don't OR anything
  252.          with the ComBase parameter the FIFOs will be enabled if a 16550
  253.          is present.
  254.  
  255.          To deal with problems with the Western Digital 16550, the ASYNC
  256.          port structure is now one element longer.  The new element is
  257.          called 'IERVal'.  Also options were added to allow you to open
  258.          a port without enabling MSR interrupts, LSR interrupts, or
  259.          both.  See the notes on the WD16550 in ASYNC.DOC for more
  260.          information.
  261.  
  262.  
  263.  
  264.  
  265.          Conversion LIBs and a batch file were added to support Zortech
  266.          C / C++.  C++ header files and a C++ demo program for either
  267.          Turbo C++ or Zortech C++ were added.
  268.  
  269.          Two new macros are now defined in COMM.H.  They are:
  270.  
  271.          async_txcnt(ASYNC *port) -- returns number of bytes left
  272.                                      in the transmit buffer still to
  273.                                      be transmitted.  Use async_txempty
  274.                                      if you are waiting for 0 byte
  275.                                      condition -- it's more efficient.
  276.  
  277.          async_rxfree(ASYNC *port) - returns bytes of free space left
  278.                                      in the receive buffer.
  279.  
  280.  
  281.          VIDEO FUNCTIONS:
  282.  
  283.          One minor bug was fixed.  The rd_scrnd function returned an
  284.          incorrect pointer if the function was called with a request to
  285.          read 0 bytes.  The result string was correct but the return
  286.          value was wrong.  It now returns the correct pointer.
  287.  
  288.          A new global variable was added to control whether a displayed
  289.          backspace character was destructive or non-destructive.
  290.          Previously it was always destructive and that still is the
  291.          default.  The variable is v_bksp.  Setting v_bksp to 0 will
  292.          cause the backspace character to be non-destructive.
  293.  
  294.  
  295.  
  296.  
  297.                             MCOMM 5.20 UPGRADE NOTES
  298.  
  299.             Major changes in this version of MCOMM are support for the
  300.          16550 UART's FIFO mode of operation, changes in the header
  301.          files, new time-out functions, and updated documentation.
  302.  
  303.  
  304.          16550 UART SUPPORT:
  305.  
  306.             The async code now supports the 16550 UART's FIFO mode of
  307.             operation.  Key features are:
  308.  
  309.             1) The async_open function automatically detects a 16550 and
  310.                enables its FIFOs (can be optionally defeated).
  311.  
  312.             2) Functions are provided to set the receiver FIFO trigger
  313.                level and to control the maximum number of bytes to load
  314.                into the transmit FIFO at one time.
  315.  
  316.             3) The interrupt handler has been re-written to make most
  317.                efficient use of the FIFO registers (they process
  318.                multiple bytes per interrupt).
  319.  
  320.             ASYNC.DOC contains full descriptions of the new functions
  321.             and changes made to the old functions.  It also has some
  322.             information on how to set the receiver FIFO trigger level
  323.             and the 'maximum number of bytes to transmit to the FIFOs at
  324.             one time' level to achieve the best results.
  325.  
  326.  
  327.          HEADER FILE CHANGES:
  328.  
  329.             Due to stricter type checking of newer compilers, several
  330.             functions that formerly were declared as taking 'char' argu-
  331.             ments are now declared as taking 'int' arguments.  This
  332.             prevents getting an excessive number of warnings when pass-
  333.             ing constants to these functions.
  334.  
  335.             The 'cdecl' keyword was added to the function prototypes to
  336.             prevent problems when compiling with Microsoft's 'fastcall'
  337.             option enabled.  This keyword, as well as the 'near' and
  338.             'far' keywords, may not be compatible with your compiler.
  339.             See MUSTREAD.DOC for more information.
  340.  
  341.             All the video functions are now prototyped in ANSIDRV.H.
  342.             Before half of them were in ANSIDRV.H and the rest were in
  343.             EXTRA.H.
  344.  
  345.  
  346.          TIME OUT FUNCTIONS:
  347.  
  348.             The time-out functions have been changed to a new version
  349.             that takes a pointer to a 'long' rather than a pointer to a
  350.             TIMEOUT structure.  The new functions are faster and work
  351.             with longer timeouts than the old versions.  Converting to
  352.             the new style consists mainly of changing all occurrences of
  353.             'struct TIMEOUT' in your code to 'long'.
  354.  
  355.